//package top.xmj.aop;
//
//import com.alibaba.fastjson.JSON;
//import org.aspectj.lang.JoinPoint;
//import org.aspectj.lang.Signature;
//import org.aspectj.lang.annotation.*;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.stereotype.Component;
//import org.springframework.web.context.request.RequestAttributes;
//import org.springframework.web.context.request.RequestContextHolder;
//
//import javax.servlet.http.HttpServletRequest;
//import java.util.Enumeration;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * @author 冰咖啡
// * Date:3/12/2022 下午 3:01
// * Description:
// */
//@Aspect
//@Component
//public class JwtAop {
//
//    private Logger logger = LoggerFactory.getLogger(JwtAop.class);
//
//    @Pointcut("execution(* top.xmj.*.*Service222.*(..))")
//    private void executeBaseService(){}
////
////    @Pointcut("execution(void top.xmj.controller.WebSocketServer.onOpen())")
////    private void executeCheckService(){}
////
////    @Before("executeBaseService()")
////    public void doBeforeBaseAdvice(JoinPoint joinPoint){
////        logger.info("==> json方法调用开始...");
////        //获取目标方法的参数信息
////        Object[] obj = joinPoint.getArgs();
//        //AOP代理类的信息
//        joinPoint.getThis();
//        //代理的目标对象
//        joinPoint.getTarget();
//        //用的最多 通知的签名
//        Signature signature = joinPoint.getSignature();
//        //代理的是哪一个方法
//        logger.info("==> 代理的方法 :"+signature.getName());
//        //AOP代理类的名字
//        logger.info("==> AOP代理类的名字:"+signature.getDeclaringTypeName());
//        //AOP代理类的类（class）信息
//        signature.getDeclaringType();
//        //获取RequestAttributes
//        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
//        //从获取RequestAttributes中获取HttpServletRequest的信息
//        HttpServletRequest request = (HttpServletRequest) requestAttributes.resolveReference(RequestAttributes.REFERENCE_REQUEST);
//        logger.info("==> 请求者的IP："+request.getRemoteAddr());
//        //如果要获取Session信息的话，可以这样写：
//        //HttpSession session = (HttpSession) requestAttributes.resolveReference(RequestAttributes.REFERENCE_SESSION);
//        Enumeration<String> enumeration = request.getParameterNames();
//        Map<String,String> parameterMap = new HashMap<String,String>();
//        while (enumeration.hasMoreElements()){
//            String parameter = enumeration.nextElement();
//            parameterMap.put(parameter,request.getParameter(parameter));
//        }
//        String str = JSON.toJSONString(parameterMap);
//        if(obj.length > 0) {
//            logger.info("==> 请求的参数信息为："+str);
//        }
//
//    }
//
//    @Before("executeCheckService()")
//    public void doBeforeCheckAdvice(JoinPoint joinPoint){
//        Object[] obj = joinPoint.getArgs();
//        //AOP代理类的信息
//        joinPoint.getThis();
//        //代理的目标对象
//        joinPoint.getTarget();
//        //用的最多 通知的签名
//        Signature signature = joinPoint.getSignature();
//        //代理的是哪一个方法
//        logger.info("==> 代理的方法 :"+signature.getName());
//        //AOP代理类的名字
//        logger.info("==> AOP代理类的名字:"+signature.getDeclaringTypeName());
//        //AOP代理类的类（class）信息
//        signature.getDeclaringType();
//        //获取RequestAttributes
//        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
//        //从获取RequestAttributes中获取HttpServletRequest的信息
//        HttpServletRequest request = (HttpServletRequest) requestAttributes.resolveReference(RequestAttributes.REFERENCE_REQUEST);
//        logger.info("===> token:"+request.getHeader("Authorization"));
//        logger.info("==> 请求者的IP："+request.getRemoteAddr());
//        //如果要获取Session信息的话，可以这样写：
//        //HttpSession session = (HttpSession) requestAttributes.resolveReference(RequestAttributes.REFERENCE_SESSION);
//        Enumeration<String> enumeration = request.getParameterNames();
//        Map<String,String> parameterMap = new HashMap<String,String>();
//        while (enumeration.hasMoreElements()){
//            String parameter = enumeration.nextElement();
//            parameterMap.put(parameter,request.getParameter(parameter));
//        }
//        String str = JSON.toJSONString(parameterMap);
//        if(obj.length > 0) {
//            logger.info("==> 请求的参数信息为："+str);
//        }
//
//    }
//}
